#pragma once

#include <xtd/type_traits.h>

namespace g2 
{

template <typename T>
class basic_vector;
template <typename T>
class basic_smatrix;
template <typename T>
class basic_matrix;

template <typename T>
struct accumulator_typedefs
{
	/// these types will be used to store statistics, so we use element types everywhere
	typedef typename xtd::type_traits<T>::accumulator_type element;
	typedef basic_vector<element> vector;
	typedef basic_smatrix<element> smatrix;
	typedef basic_matrix<element> matrix;
};

} //namespace g2 
